/**
 * @Author: lclangcheng
 * @Date:   2018-08-06 10:14:28
 * @Email:  lclangcheng@gmail.com
 * @Filename: mysql_pools.js
 * @Last modified by:   lclangcheng
 * @Last modified time: 2018-08-17 10:19:29
 * @License: jin10
 * @Copyright: jin10
 */
'use strict'

const redis = require('redis')
const util = require('util')
redis.RedisClient.prototype.getAsync = util.promisify(redis.RedisClient.prototype.get)
redis.RedisClient.prototype.setAsync = util.promisify(redis.RedisClient.prototype.set)
redis.RedisClient.prototype.delAsync = util.promisify(redis.RedisClient.prototype.del)
redis.RedisClient.prototype.existsAsync = util.promisify(redis.RedisClient.prototype.exists)
redis.RedisClient.prototype.setnxAsync = util.promisify(redis.RedisClient.prototype.set)
redis.RedisClient.prototype.rpopAsync = util.promisify(redis.RedisClient.prototype.rpop)
redis.RedisClient.prototype.lpopAsync = util.promisify(redis.RedisClient.prototype.lpop)
redis.RedisClient.prototype.lpushAsync = util.promisify(redis.RedisClient.prototype.lpush)
redis.RedisClient.prototype.rpushAsync = util.promisify(redis.RedisClient.prototype.rpush)
redis.RedisClient.prototype.brpopAsync = util.promisify(redis.RedisClient.prototype.brpop)
redis.RedisClient.prototype.brpoplpushAsync = util.promisify(redis.RedisClient.prototype.brpoplpush)
redis.RedisClient.prototype.rpoplpushAsync = util.promisify(redis.RedisClient.prototype.rpoplpush)
redis.RedisClient.prototype.llenAsync = util.promisify(redis.RedisClient.prototype.llen)

const config = require('config-lite')(__dirname)
const redisPools = {}

class RedisPool {
  constructor (connect = 'default') {
    if (redisPools[connect] === undefined) {
      redisPools[connect] = redis.createClient({
        host: config.redis[connect].host,
        db: config.redis[connect].db,
        password: config.redis[connect].pass,
        port: config.redis[connect].port
      })
    }
    return redisPools[connect]
  }
}

module.exports = RedisPool
